/**
* @author Cheng Liu
**/
#pragma once
#include "Events.h"
#include "IPluginFacade.h"

class IEventHandler {
public:
    virtual bool HandleEvent(Events::Event * event) = 0;
    virtual ~IEventHandler(){}
};

class IPlugin : public IEventHandler {
public:
    virtual void Initialize(IPluginFacade* Cine) = 0;
    virtual void Activate() = 0;
    virtual void Deactivate() = 0;
    virtual void Release() = 0;
};

extern "C" __declspec( dllexport ) IPlugin* CreatePluginObject();
extern "C" __declspec( dllexport ) void DestroyPluginObject(IPlugin * plugin);
extern "C" __declspec( dllexport ) const char* GetPluginName();
extern "C" __declspec( dllexport ) int GetPluginVersion();
